css: Introduct -gtk-icon-palette
authorBenjamin Otte <otte@redhat.com>
Wed, 2 Dec 2015 23:33:51 +0000 (00:33 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 2 Dec 2015 23:47:00 +0000 (00:47 +0100)
commit7fa37e4bf886745e8e7b07b6653513ac4c5172d3
tree78aaf1fffad34b65afda31dcfab5ec84cb37e09b
parent109c3aa65a66c4a0bbae546500f68f82178d6d36
css: Introduct -gtk-icon-palette

This borrows heavily from the CSS4 fonts draft's font-palette, currently
found at https://drafts.csswg.org/css-fonts-4/#font-palette-control

The palette is mainly meant to trigger invalidations when colors used for
symbolic icons change, to potentially allow extending supported colors
in symbolic icons and to recolor all colors of a symbolic icon, not just
the main one.

The syntax for the property goes like this:
Name:        -gtk-icon-palette
Value:       default | name <color> [ , name <color> ]*
Initial:     default
Applies to:  all elements with icons
Inherited:   yes
Animatable:  yes, each color animated separately

The property defines a list of named colors to be used when looking up
icons. If a name is not defined, the value of the current "color"
property is used. Which names are relevant depends on the icons in use.
Currently symbolic icons make use of the names "success", "warning" and
"error".

"default" is the current behavior of the GTK when coloring symbolic
icons and is equal to the string
  success @success_color, warning @warning_color, error @error_color

Animation is crudely implemented by animating colors that are in both
palettes that are animated and otherwise keeping the color from the
palette that defined it. Note that this can cause a sharp cut at the
beginning or end of the animation when the color goes away and will
therefore be replaced with the color property.

You can see an example of animations at
http://gfycat.com/CautiousPeacefulIaerismetalmark
gtk/Makefile.am
gtk/gtkcsscolorvalue.c
gtk/gtkcsspalettevalue.c [new file with mode: 0644]
gtk/gtkcsspalettevalueprivate.h [new file with mode: 0644]
gtk/gtkcssstylepropertyimpl.c
gtk/gtkcsstypesprivate.h
gtk/gtkicontheme.c